﻿#include<iostream>
#include<easyx.h>
using namespace std;

void getMessage() {
	ExMessage msg;//消息结构体，用于存储消息事件的详细信息，例如鼠标点击、键盘输入等
	while (true) {
		if (peekmessage(&msg, EX_MOUSE)) {//非阻塞地检查鼠标事件,其他输入信息不记录
			switch (msg.message) {//msg.message 是ExMessage结构体中的一个字段，用于 存放消息的类型。它标识了当前消息的具体事件类型，例如鼠标点击、键盘输入、窗口事件等。
			case WM_LBUTTONDOWN:  // 左键按下
				printf("左键按下  位置在(%d,%d)\n", msg.x, msg.y);//输出鼠标位置
				break;
			case WM_RBUTTONDOWN: //右键按下
				printf("右键按下\n");
				break;
			case WM_MBUTTONDOWN: // 中键按下
				printf("中键按下\n");
				break;
			case WM_MOUSEWHEEL: // 滚轮滚动
				printf("滚轮滚动  滚动方向:%d\n", msg.wheel);//x向下滚是-120，上是120，负下正上
				break;
			case WM_LBUTTONDBLCLK: //左键双击
				printf("左键双击\n");
				break;
			case WM_MOUSEMOVE: // 鼠标移动
				printf("鼠标移动\n");
				break;
			}
		}
	}

	/*ExMessage msg; //测试鼠标点击位置用的
	while (true) {
		if (peekmessage(&msg, EX_MOUSE)) {
			if (msg.message == WM_LBUTTONDOWN) {
				barrierselect(msg.x, msg.y);
				cout << msg.x << "     " << msg.y << endl << endl;;
			}
		}
	}*/
}

int main() {                //不自动缩小控制台，本质就是1
	initgraph(500, 500, EX_SHOWCONSOLE | EX_DBLCLKS);
	setbkcolor(WHITE);                                 //支持鼠标双击事件
	cleardevice();

	getMessage();

	getchar();
	closegraph();
	return 0;
}